The present invention pertains to a method and apparatus for correcting packet loss in a standard-based packet video system. More particularly, the present invention pertains to monitoring a packet-loss event and correcting such an event.
A typical video communication system 10 that is known in the art is shown in FIG. 1. The system 10 allows communication between the systems of User A 11 and User B 13 via a transmission medium or network 12 (e.g. a so-called Ethernet network). In this example, the system at User A 11 includes a processor 15, such as a Pentium.RTM. processor manufactured by Intel Corporation, Santa Clara, Calif., executing code stored in memory 19. A video system 17 is provided that captures and compresses video image data for transmission over the network 12 to the station at User B 13. In this example, the video subsystem 17 is coupled to the processor 15 via a first bus 16 such as one operated according to the Peripheral Component Interconnect (PCI) (Version 2.1, 1995, PCI Special Interest Group, P.O. Box 14070, Portland, Oreg., 97214). The video subsystem is also responsible for decompressing video images received from the system at User B 13. The network 12 is coupled to an Ethernet network interface 21 which handles the sending of digital video information from the video subsystem over the network 12. The network interface 21 is coupled to the video subsystem 17 and the PCI bus 16 via an ISA (Industry Standard Architecture) bus 20 and a bridge circuit 18.
Referring to FIG. 2, a exemplary video subsystem 17 that is known in the art is shown. The video subsystem is typically run by an application 30 (e.g., a program stored in memory 19 and executed by the processor 15 in FIG. 1). A camera 31 is provided that generates video image data for a video capture component 33. The video capture component 33 "captures" the video image data from the camera one frame at a time in a known manner and at a predetermined rate (e.g., approximately 30 frames per second). The video capture component 33 transfers the video frame data to a video coder/decoder 35 which typically includes a coder/decoder (codec) 36 that compress the video image data for the frame. Typical compression algorithms include any of a variety of block transform based video compression algorithms such as H.261 (International Telecommunication Union--Telecommunications Standardization Sector (ITU-T), March, 1993), H.263 (ITU-T, Dec. 5, 1995), JPEG ("Joint Photographic Expert Group")(International Organization for Standardization/International Electrotechnical Commission ("ISO/IEC") 10918-1), MPEG-I and MPEG-II ("Motion Picture Expert Group")(ISO/IEC 11172-2 and 13818-2). In these block transform based video compression algorithms, the uncompressed video frame data is divided into groups of blocks (GOB) (e.g., 16 horizontal lines of pixels for each group of blocks). Each GOB is divided into a sequence of macroblocks (e.g., 16.times.16 pixel blocks), each defining a spatial area of the video frame. Each macroblock is compressed using one of the aforementioned algorithms in the coder portion of the codec 36.
The video coder/decoder 35 passes each compressed video image data for each frame to a packet preparation module (PPM) payload handler ("payload handler") 37 which fragments the compressed video image data into packets which each include a number of macroblocks. The appropriate protocol information is added to one or more packets (e.g., according to the so-called Real-Time Transport Protocol (RTP) defined by the Internet Engineering Task Force (IETF)) for transport over the transmission medium. The packets, with the appropriate protocol layer, are then ready to be transported over the network 12 to User B 13.
Packets from User B 13, for example, are received at the payload handler 37 where the RTP protocol information is assessed and "stripped off." The compressed video image data in the packets is ascertained and transferred to the codec 36 in the video coder/decoder 35. The decoder portion of the codec 36 creates uncompressed video image data which can be displayed at a display 39 such as a cathode ray tube (CRT) or active matrix flat-screen under the control of the application 30.
In the system 10 of FIG. 1, packets of information can be lost or the contents of a packet could be in error (e.g., during transmission over the network 12). Systems such as the Video for Windows.RTM. (VfW) system and video applications used in the UNIX operating system handle packet loss by skipping the processing of such a packet and continue processing on the next uncompromised packets. Such systems have disadvantages in that by ignoring the lost packet, the relationship between the other packets is compromised leading to errors in what is displayed. Also, errors that occur due to ignoring the lost packet are propagated to other packets that use prediction to determine video image data.